/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package educar.abmResolucion;

import educar.models.Alumno;
import educar.models.Resolucion;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;
import javax.swing.JOptionPane;

/**
 * En esta clase se encuentran los metodos necesarios para modificar una resolucion 
 * ya existente en el sistema.
 * @author Flubber
 */
public class ModificarResolucionController implements ActionListener {
    
    //Atributo que permite abrir una ventana con los datos de la resolucion
    //Ventana Reutilizada    
    private AgregarResolucionView agregarResolucionView;
    
    //Arreglo usado para almacenar los datos de una resolucion: nroAlumno, codActividad y solucion del mismo    
    private String vector[] = new String[3];    
    
    //Este atributo se utiliza como parametro del constructor para que cuando se cierren la ventana actual 
    //volvemos a la ventana anterio(queda visible la ventana que estaba oculta).    
    private ResolucionController resolucionControl;
    
    //Atributo auxiliar usado para almacenar el numero de la fila donde se hizo
    //doble clic para modificar la resolucion    
    private int fila;
    
    //Atributo auxiliar para almacenar las claves de la resolucion    
    private String keys[] = new String[2]; 
    
// <editor-fold defaultstate="collapsed" desc="Constructor">
    /**
     * <hr>
     * ModificarResolucionController(): contructor que recibe como parametro el controlador que lo invoco
     * <hr>
     * @param resolucionControler 
     */    
    public ModificarResolucionController(ResolucionController resolucionControler){        
        resolucionControl = resolucionControler;
        agregarResolucionView = new AgregarResolucionView();
        agregarResolucionView.setActionListener(this);
    }
 // </editor-fold>      

// <editor-fold defaultstate="collapsed" desc="Action setView">    
    /**
     * <hr>
     * setView(): Hace visible a una ventana de Modificar una Resolucion.
     * <hr>
     * @param registro <code>Vector</code> con los datos de la resolucion a ser modificado
     * @param fila <code>int</code> con la fila a modificar
     */    
    public void setView(Vector registro, int fil) {
        fila = fil;
        keys[0] = registro.elementAt(1).toString();
        keys[1] = (String) registro.elementAt(2);  
        agregarResolucionView.setTitulo("Modificar una Dedicacion");
        agregarResolucionView.setNroAlumno( registro.elementAt(1).toString());
        agregarResolucionView.setCodActividad((String) registro.elementAt(2));
        agregarResolucionView.setSolucion((String )registro.elementAt(3));
        agregarResolucionView.setVisible(true);
    }
// </editor-fold>  

// <editor-fold defaultstate="collapsed" desc="Metodos ActionPermormed">     
    /**
     * <hr>
     * actionPerformed():metodo que recibe un evento de un boton y dependiendo de
     * este este evento puede modificar o no una resolucion.
     * <hr>
     * @param e 
     */     
    @Override
    public void actionPerformed(ActionEvent e) {
        //Atributo usado para verificar procedencia (boton)          
        Object source = e.getSource();
        if (agregarResolucionView.getJbCancelar() == source){ //Boton Cancelar
            agregarResolucionView.dispose();
        }
        if (agregarResolucionView.getJbAceptar() == source){  //Boton Aceptar
            vector[0] = agregarResolucionView.getNroAlumno(); 
            vector[1] = agregarResolucionView.getCodActividad();
            vector[2] = agregarResolucionView.getSolucion();
            if (!((vector[0].length() == 0) || (vector[1].length() == 0) || (vector[2].length() == 0))) {
                if ((Alumno.exist(vector[0]))){// && (Actividad.exist(vector[1]))) {
                    Resolucion resolucion = new Resolucion(vector);                
                    if (resolucion.setResolucionByKeys(keys[0], keys[1])) {                             
                        resolucionControl.actualizarFila(vector, fila);
                        agregarResolucionView.dispose();
                    } else {
                        JOptionPane.showMessageDialog(null,"Ya existe un registro con el Nro de Alumno "+ vector[0]+" y el Codigo de la Actividad"+ vector[1]+".","proyecto 2012",JOptionPane.WARNING_MESSAGE);
                    }
                } else{
                    JOptionPane.showMessageDialog(null,"Alguno de los campos no existe","proyecto 2012",JOptionPane.WARNING_MESSAGE);
                }
            } else {
                JOptionPane.showMessageDialog(null,"Existe al menos un campo sin completar.\n\nRevise los campos ingresados","proyecto 2012",JOptionPane.WARNING_MESSAGE);
            }
        }
    }//Fin del metodo actionPerformed()
// </editor-fold>    

}//Fin de la clase ModificarResolucionController
